package br.mg.bhe.ftpobre.command.facade;

import java.util.logging.Level;

import br.mg.bhe.ftpobre.fs.LocalFile;
import br.mg.bhe.ftpobre.fs.OpenFileManager;
import br.mg.bhe.ftpobre.gui.MainFrame;
import br.mg.bhe.ftpobre.gui.fs.CreateFolderFrame;
import br.mg.bhe.ftpobre.gui.fs.LocalFilePropertiesFrame;
import br.mg.bhe.ftpobre.gui.fs.RemoteFilePropertiesFrame;
import br.mg.bhe.ftpobre.util.LocalFileUtil;
import br.mg.bhe.ftpobre.util.LogUtil;
import br.mg.bhe.ftpobre.util.MensagensUtil;

/**
 * 
 * @author Aureliano
 */
public final class FileFacade {

	private FileFacade() {
		super();
	}
	
	public static void createFolder(boolean local) {
		CreateFolderFrame frame = new CreateFolderFrame(MainFrame.getInstance(), true, local);
		frame.setVisible(true);
	}
	
	public static void openFile() {
		LocalFile file = LocalFileUtil.getSelectedFile();
		if (file == null) {
			return;
		}
    	
    	try {
    		OpenFileManager.openFile(file.getPath());
    	} catch (Exception ex) {
    		MensagensUtil.showErrorMessage("Falha ao abrir arquivo",
    				"Não foi possível abrir o arquivo. Detalhe: " + ex.getMessage());
    		LogUtil.getLogger(DeleteFileFacade.class).log(Level.SEVERE, ex.getMessage(), ex);
    	}
	}
	
	public static void showProperties(boolean local) {
		try {
			if (local) {
				showLocalProperties();
			} else {
				showRemoteProperties();
			}
		} catch (Exception ex) {
			MensagensUtil.showErrorMessage("Falha ao listar propriedades do objeto",
    				"Não foi possível listar propriedades do objeto. Detalhe: " + ex.getMessage());
    		LogUtil.getLogger(DeleteFileFacade.class).log(Level.SEVERE, ex.getMessage(), ex);
		}
	}
	
	private static void showLocalProperties() {
		LocalFilePropertiesFrame frame = new LocalFilePropertiesFrame(MainFrame.getInstance(), true);
		frame.setVisible(true);
	}
	
	private static void showRemoteProperties() {
		RemoteFilePropertiesFrame frame = new RemoteFilePropertiesFrame(MainFrame.getInstance(), true);
		frame.setVisible(true);
		//throw new UnsupportedOperationException();
	}
}